﻿#pragma once
#include <mysqlx/xdevapi.h>
#include <string>
#include <vector>
#include <map>
#include <memory>
#include <iostream>

class MySQLDB {
public:
    MySQLDB(const std::string& host,
            unsigned int port,
            const std::string& user,
            const std::string& password,
            const std::string& database);

    ~MySQLDB();

    // 连接数据库
    bool connect();

    // 查询表，返回结果集
    std::vector<std::map<std::string, std::string>> query(
            const std::string& tableName,
            const std::vector<std::string>& columns,
            const std::string& whereClause = "");

    // 执行增删改操作
    bool insert(const std::string& tableName, const std::map<std::string, std::string>& data);
    bool update(const std::string& tableName, const std::map<std::string, std::string>& data,
                const std::string& whereClause);
    bool remove(const std::string& tableName, const std::string& whereClause);

private:
    std::string host_;
    unsigned int port_;
    std::string user_;
    std::string password_;
    std::string database_;

    std::unique_ptr<mysqlx::Session> session_;
};
